from functools import reduce
CHAR_TO_FLOAT = {
    '0': 0,
    '1': 1,
    '2': 2,
    '3': 3,
    '4': 4,
    '5': 5,
    '6': 6,
    '7': 7,
    '8': 8,
    '9': 9,
    '.': -1
}

def str2flat(s):
	pass
a = float("2222.2222")
print(a);
if a == "2222.2222":
	print("a is str")
else:
	print("a is float")
def str2float2(s):
    nums = map(lambda ch: CHAR_TO_FLOAT[ch], s)
    point = 0
    def to_float(f, n):
        nonlocal point
        if n == -1:
            point = 1
            return f
        if point == 0:
            return f * 10 + n
        else:
            point = point * 10
            return f + n / point
    return reduce(to_float, nums, 0.0)

print(str2float2('0'))
print(str2float2('123.456'))
print(str2float2('123.45600'))
print(str2float2('0.1234'))
print(str2float2('.1234'))
print(str2float2('120.0034'))